package com.design.patterns.structuralModel.observer;

import com.design.patterns.structuralModel.observer.service.ConcrereObserver;
import com.design.patterns.structuralModel.observer.service.ConcreteSubject;

/**
 *观察者模式
 * 目的：定义对象间的一种一对多的依赖关系，当一个对象的状态发生改变时，所有依赖于它的对象都得到通知并被自动更新。
 *
 * 就是将观察者注册到被观察者中，当被观察者发生改变后，立刻通知观察者，就像一个触发器一样，把消息广播出去
 */
public class ObserverMain {
    public static void main(String[] args) {
        //创建公众号主体
        ConcreteSubject mSubscriptionSubject=new ConcreteSubject();
        //创建微信用户
        ConcrereObserver user1=new ConcrereObserver("张三");
        ConcrereObserver user2=new ConcrereObserver("李四");
        ConcrereObserver user3=new ConcrereObserver("王二");
        //订阅公众号
        mSubscriptionSubject.attach(user1);
        mSubscriptionSubject.attach(user2);
        mSubscriptionSubject.attach(user3);
        //公众号更新发出消息给订阅的微信用户
        mSubscriptionSubject.notify("Alaia的专栏更新了");
    }
}
